package com.skyz.wrap.bean;

import java.util.Map;

public class AliAuthResult {
    String memo;
    String resultStatus;
    String result;
    PayResponse data;

    public PayResponse getPayResponse(){
        PayResponse data =new PayResponse();
        String[] items= null;
        if (result!=null&&result.contains("&")){
            items = result.split("&");
        }
        if (items!=null){
            for (String item:items) {
                if (item.contains("=")){
                    String[] ps = item.split("=");
                    if (ps!=null&&ps.length>1){
                        String psItem= ps[0];
                        String psValue= ps[1];
                        if (psItem.equals("result_code")){
                            data.result_code =psValue;
                        }else  if (psItem.equals("auth_code")){
                            data.auth_code =psValue;
                        }else  if (psItem.equals("user_id")){
                            data.user_id =psValue;
                        }else  if (psItem.equals("alipay_open_id")){
                            data.alipay_open_id =psValue;
                        }
                    }

                }
            }
        }
       return data;
    }


    /**
     * 支付结果map转对象
     * @param map
     * @return
     */
    public static AliAuthResult formMap(Map<String, String> map) {
        AliAuthResult result = new AliAuthResult();
        result.memo = map.get("memo");
        result.resultStatus = map.get("resultStatus");
        result.result = map.get("result");
        return result;
    }

    /**
     * 是否支付成功
     * @return
     */
    public boolean isSuc(){
        //todo  result_code==200  1005账户已冻结，如有疑问，请联系支付宝技术支持。 202 系统异常，请稍后再试或联系支付宝技术支持。
        data = getPayResponse();
        return resultStatus!=null&&"9000".equals(resultStatus)&& data.isSuc();
    }

    public String getAuthCode(){
        if (data==null){
            data = getPayResponse();
        }
       return data.auth_code;
    }


    /**
     * 获取支付code信息
     * @return
     */
    public String getResultStatusMsg(){
        if (resultStatus==null){
            return "支付数据异常";
        }
        if ("9000".equals(resultStatus)){
            return "授权成功";
        }

        if ("4000".equals(resultStatus)){
            return "授权失败";
        }
        if ("5000".equals(resultStatus)){
            return "重复请求";
        }
        if ("6001".equals(resultStatus)){
            return "用户中途取消";
        }
        if ("6002".equals(resultStatus)){
            return "网络连接出错";
        }

        return memo==null?"其它支付错误":memo;
    }




    public class PayResponse{
        String result_code;

        String app_id;

        String auth_code;
        String user_id;
        String alipay_open_id;


        /**
         * 接口是否调用成功
         * @return
         */
        public boolean isSuc(){
            return result_code!=null&&"200".equals(result_code);
        }
        public String getMSgByCode(){
            if (result_code==null){
                return "授权失败";
            }
            if (auth_code==null){
                return "授权失败:获取授权码失败";
            }
            if ("1005".equals(result_code)){
                return "账户已冻结，如有疑问，请联系支付宝技术支持。";
            }
            if ("202".equals(result_code)){
                return "系统异常，请稍后再试或联系支付宝技术支持";
            }

            return "授权失败:其他错误";
        }

    }


}
